# -*- encoding: utf-8 -*-
"""

PyCharm @property函数的使用
2024年10月21日21时55分
by wenyang

文件主要内容:


"""

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @property
    def info(self):
        return self.name, self.age
class C:
    def __init__(self):
        self._a = None
    def fget(self):
        return self._a
    def fset(self, value):
        self._a = value

    def fdel(self):
        self._a = None

    def doc(self):
        print("这是一个文档")
    # property由fget, fset, fdel, doc四个参数组成
    # fget 可以理解为getter方法， 可以传入函数来进行设置
    # fset可以理解为setter方法 可以传入函数来进行设置
    # fdel可以理解为deleter方法 可以传入函数来进行设置
    # doc可以理解为属性的描述。可以传入函数来进行设置
    a = property(fget, fset, fdel, doc)
    # 这个等价于
    # a = property()
    # a = a.getter(fget)
    # a = a.setter(fset)
    # a = a.deleter(fdel)
    # a = a.doc(doc)

    def func(self):
        print(type(C.a))

def Student(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @property
    def get_score(self, score):
        self.score = score
    # 就是相当于 get_score = property(get_score)

def main():
    c = C()
    c.func()  # 返回的就是一个property的类
    print(type(c.func))


    print(c.a)

    c.a = 100
    print(c.a)

    del c.a
    print(c.a)

    print(c.doc())



if __name__ == "__main__":
    main()
